package com.recipedb.recipedb.service;

import com.recipedb.recipedb.entity.Favorite;
import com.recipedb.recipedb.entity.Recipe;
import org.springframework.data.domain.Page;

import java.util.List;
import java.util.Map;

public interface FavoriteService {

    Favorite addFavorite(Long userId, Long recipeId);

    boolean removeFavorite(Long userId, Long recipeId);

    List<Favorite> getFavoritesByUserId(Long userId);

    List<Recipe> getFavoriteRecipesByUserId(Long userId);

    boolean isFavorite(Long userId, Long recipeId);

    Long getFavoriteCountByRecipeId(Long recipeId);

    Long getTotalFavoritesByUserId(Long userId);

    Map<Long, Long> getFavoriteCountsByRecipeIds(List<Long> recipeIds);

    /**
     * 收藏搜索接口（适配 Recipe 关联查询逻辑）
     * @param userId      用户ID
     * @param keyword     菜谱标题关键词
     * @param tag         菜谱标签
     * @param category    菜谱分类
     * @param ingredient  菜谱食材
     * @param pageNum     页码（默认1）
     * @param pageSize    每页条数（默认10）
     * @return 分页收藏列表
     */
    Page<Favorite> searchFavorites(
            Long userId,
            String keyword,
            String tag,
            String category,
            String ingredient,
            Integer pageNum,
            Integer pageSize);

}